/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.myproject.ordendigital.utiles;

import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;


public class Utiles {

    public static String FORMATO_FECHA_LARGE="dd/MM/yyyy hh:mm:ss";
    public static String FORMATO_FECHA_CORTA="dd/MM/yyyy";
    public static String FORMATO_FECHA_CORTA_MYSQL="yyyy-MM-dd";

    public static String nullToBlank(Object texto){
        if(texto==null){
            return "";
        }
        return texto.toString().trim();
    }

    public static String hash(String palabra) throws Exception {
         MessageDigest md = MessageDigest.getInstance("MD5");
         byte[] b = md.digest(palabra.getBytes());
         int size = b.length;
         StringBuffer h = new StringBuffer(size);
         for (int i = 0; i < size; i++) {
         int u = b[i]&255;
                 if (u<16){
                         h.append("0"+Integer.toHexString(u));
                 }else {
                         h.append(Integer.toHexString(u));
                 }
         }
         return h.toString();
    }

    public static Calendar stringToCalendar(String fecha,String formato) throws Exception{
        //if(nullToBlank(fecha).equals("")){
        //    throw new Exception("Ha enviado una fecha vacia.");
        //}
        fecha=nullToBlank(fecha);
        Calendar gc = new GregorianCalendar();
        SimpleDateFormat df = new SimpleDateFormat(formato);
        gc.setTime(df.parse(fecha));
        return gc;
    }

    public static String CalendarToString(Calendar fecha,String formato) throws Exception{
        SimpleDateFormat df = new SimpleDateFormat(formato);


        return df.format(fecha.getTime());
    }

    public static String DateToString(Date fecha,String formato) throws Exception{
        SimpleDateFormat df = new SimpleDateFormat(formato);
        return df.format(fecha.getTime());
    }

    public static String ValidaDate(String fecha,String formato) throws Exception{
    	if(nullToBlank(fecha).equals("")){
            throw new Exception("Ha enviado una fecha vacia.");
    	}
        fecha=nullToBlank(fecha);
        GregorianCalendar gc = new GregorianCalendar();
        SimpleDateFormat df = new SimpleDateFormat(formato);
        gc.setTime(df.parse(fecha));
        return df.format(gc.getTime());
    }

    public static Date stringToDate(String fecha,String formato) throws Exception{
        if(nullToBlank(fecha).equals("")){
            throw new Exception("Ha enviado una fecha vacia.");
        }
        fecha=nullToBlank(fecha);
        GregorianCalendar gc = new GregorianCalendar();
        SimpleDateFormat df = new SimpleDateFormat(formato);
        gc.setTime(df.parse(fecha));
        return gc.getTime();
    }

    public static Date FechaNula() throws Exception{
        String fechanull = "2039-12-31";
        Date dateNull;
        dateNull = stringToDate(fechanull, FORMATO_FECHA_CORTA_MYSQL);
        return dateNull;        
    }

    public static Date FechaActual() throws Exception{
        String fecha;
        Date date;
        fecha = DateToString(Calendar.getInstance().getTime(), FORMATO_FECHA_CORTA_MYSQL);
        date = stringToDate(fecha, Utiles.FORMATO_FECHA_CORTA_MYSQL);
        return date;
    }

}
